home *** CD-ROM | disk | FTP | other *** search
- //$$ controlw.h Control word class
-
- #ifndef CONTROL_WORD_LIB
- #define CONTROL_WORD_LIB 0
-
- // for organising an int as a series of bits which indicate whether an
- // option is on or off.
-
- class ControlWord
- {
- protected:
- int cw; // the control word
- public:
- ControlWord() : cw(0) {} // do nothing
- ControlWord(int i) : cw(i) {} // load an integer
-
- // select specific bits (for testing at least one set)
- ControlWord operator*(ControlWord i) const
- { return ControlWord(cw & i.cw); }
- void operator*=(ControlWord i) { cw &= i.cw; }
-
- // set bits
- ControlWord operator+(ControlWord i) const
- { return ControlWord(cw | i.cw); }
- void operator+=(ControlWord i) { cw |= i.cw; }
-
- // reset bits
- ControlWord operator-(ControlWord i) const
- { return ControlWord(cw - (cw & i.cw)); }
- void operator-=(ControlWord i) { cw -= (cw & i.cw); }
-
- // check if all of selected bits set or reset
- Boolean operator>=(ControlWord i) const { return (cw & i.cw) == i.cw; }
- Boolean operator<=(ControlWord i) const { return (cw & i.cw) == cw; }
-
- // flip selected bits
- ControlWord operator^(ControlWord i) const
- { return ControlWord(cw ^ i.cw); }
- ControlWord operator~() const { return ControlWord(~cw); }
-
- // convert to integer
- int operator+() const { return cw; }
- int operator!() const { return cw==0; }
- FREE_CHECK(ControlWord)
- };
-
-
- #endif
-